/************************************************************************************
LD3320 有源晶振 22MHZ  不同的晶振请修改LDChip_Register.h 中的定义值（＃define CLK_IN  22）
************************************************************************************/

#ifndef __LDCHIP_REGISTER_H
#define __LDCHIP_REGISTER_H
#include  "ld_interface.h"

//	以下三个状态定义用来记录程序是在运行ASR识别还是在运行MP3播放
#define         LD_MODE_IDLE		    0x00
#define         LD_MODE_ASR_RUN		  0x08
#define         LD_MODE_MP3		 	    0x40

//	以下五个状态定义用来记录程序是在运行ASR识别过程中的哪个状态
#define         LD_ASR_NONE					0x00	//	表示没有在作ASR识别
#define         LD_ASR_RUNING				0x01	//	表示LD3320正在作ASR识别中
#define         LD_ASR_FOUNDOK			0x10	//	表示一次识别流程结束后，有一个识别结果
#define         LD_ASR_FOUNDZERO 		0x11	//	表示一次识别流程结束后，没有识别结果
#define         LD_ASR_ERROR	 			0x31	//	表示一次识别流程中LD3320芯片内部出现不正确的状态

/********芯片时钟相关********/
#define         CLK_IN   	            (22)/* user need modify this value according to clock in */
#define         LD_PLL_11			    		(uint8)((CLK_IN/2.0)-1)
#define         LD_PLL_MP3_19		   	 	0x0f
#define         LD_PLL_MP3_1B		    	0x18
#define         LD_PLL_MP3_1D   	    (uint8)(((90.0*((LD_PLL_11)+1))/(CLK_IN))-1)

#define         LD_PLL_ASR_19 		    (uint8)(CLK_IN*32.0/(LD_PLL_11+1) - 0.51)
#define         LD_PLL_ASR_1B 		    0x48
#define         LD_PLL_ASR_1D 		    0x1f

// LD芯片固定值
#define        RESUM_OF_MUSIC         0x01
#define        CAUSE_MP3_SONG_END     0x20

#define        MASK_INT_SYNC					0x10
#define        MASK_INT_FIFO					0x04
#define    	   MASK_AFIFO_INT					0x01
#define        MASK_FIFO_STATUS_AFULL	0x08

/*关键词数目与单个关键词字符长度*/
#define 			 Number_of_Keywords					(31)
#define				 Length_of_Keyword					20

/*识别条目编号*/
#define        CODE_KAIDENG	              1
#define        CODE_GUANDENG	            2
#define        CODE_KAIMEN	            	3
#define        CODE_GUANMEN	              4
#define        CODE_KAIKONGTIAO           5
#define        CODE_GUANKONGTIAO          6
#define				 CODE_CHUSHI								7
#define				 CODE_ZHILENG								8
#define				 CODE_DAFENG								9
#define				 CODE_ZHONGFENG							10
#define				 CODE_WEIFENG							  11
#define				 CODE_SAOFENG							  12
#define				 CODE_DINGXIANG							13
#define				 CODE_SHUIMIAN							14
#define				 CODE_TUICHUSHUIMIAN				15
/*直接拿空调温度识别号传参给空调*/
#define				 CODE_16										16
#define				 CODE_17										17
#define				 CODE_18										18
#define				 CODE_19										19
#define				 CODE_20										20
#define				 CODE_21										21
#define				 CODE_22										22
#define				 CODE_23										23
#define				 CODE_24										24
#define				 CODE_25										25
#define				 CODE_26										26
#define				 CODE_27										27
#define				 CODE_28										28
#define				 CODE_29										29
#define				 CODE_30										30

#define				 ALL_OFF										31
/*麦克风音量*/
#define 				MIC_VOL         					0x43
/***********************函数定义***********************/
/*硬件通用*/
void LD_Reset(void);//复位函数
void LD_Init_Common(void);//通用初始化函数

/**语音识别**/
void  LD_AsrStart(void);
uint8 LD_AsrRun(void);
uint8 LD_AsrAddFixed(void);
uint8 RunASR(void);
void  ASR_IRQHandler(void);
uint8 LD_GetResult(void);

/**MP3播放**/
void LD_Init_MP3(void);
void LD_AdjustMIX2SPVolume(uint8 val);
void LD_ReloadMp3Data(void);
void LD_play(void);
void MP3_IRQHandler(void);




extern uint8  nLD_Mode;
#endif
